<?php
// 注册与登录控制器
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller {
	//默认显示登录界面
	//登录页面,返回视图
    public function index(){
    	$this->display();
    }
    //注册页面,返回视图
    public function register(){
    	$this->display();
    }
    //验证码
    public function verify(){
    	$Verify=new \Think\Verify();
    	$Verify->fontSize=20;
    	$Verify->length=3;
    	$Verify->imageH=50;
    	$Verify->useCurve=false;
    	$Verify->entry();
    }
    //处理ajax请求:
    //是否己存在用户名?
   public function checkAccount(){
    	//不是ajax请求就跳转
    	if(!IS_AJAX){
			$this->error('页面不存在的兄弟','./',2);
    	}
    	$account=I('post.account');
    	$where=array('account'=>$account);
    	//m函数是创基类，不需要在创模型
    	if(M('user')->where($where)->getField('id')){
    		echo "false";
    	}else{
    		echo "true";
    	}
    }
    //处理ajax请求:
    //是否己存在呢称?
    public function checkUname(){
    	//不是ajax请求就跳转
    	if(!IS_AJAX){
			$this->error('页面不存在的兄弟','./',2);
    	}
    	$username=I('post.uname');
    	$where=array('username'=>$username);
    	//m函数是创基类，不需要在创模型
    	if(M('userinfo')->where($where)->getField('id')){
    		echo "false";
    	}else{
    		echo "true";
    	}    	
    }
    //处理ajax请求:
    //验证码是否正确?
    public function checkVerify(){
    	//不是ajax请求就跳转
    	if(!IS_AJAX){
			$this->error('页面不存在的兄弟','./',2);
    	}
    	$verifyCode=I('post.verify');
    	if($this->check_verify($verifyCode)){
    		echo "true";
    	}else{
    		echo "false";
    	}
    }
	//注册表单处理
	public function runRegis(){
		//所有与用户无关的控制器都不能让用户看到
		if(!IS_POST){
			//退到控制器中的默认方法返回登录视图
			$this->error('页面不存在的兄弟','./',2);
		}
		//继续判段用户输入的表单数据
		//1.两次密码是否输入一致
		if(I('post.pwd')!=I('post.pwded')){
			$this->error('两次密码不一致（请忽进行黑客操作）','./',2);
		}
		//提取post数据
		$data=array(
			'account'=>I('post.account'),
			'password'=>md5(I('post.pwd')),
			'registime'=>$_SERVER['REQUEST_TIME'],
		);
		//实例化user模型,插入数据,返回插入行id
		$id=M('User')->data($data)->add();
		M('userinfo')->data(array('username'=>I('post.uname'),'uid'=>$id))->add();
		//默认添加一个分类关注管理员账户
		$gid=M('group')->data(['name'=>'开发者','uid'=>$id])->add();
		M('follow')->data(['fans'=>$id,'gid'=>$gid,'follow'=>1])->add();
		//注册成功
		if($id){
			//用户id存到session中
			session('uid',$id);
			//跳转到首页
    		header('Content-Type:text/html;charset=UTF-8');
			$this->success('注册成功','../',2);		
		}
		else{
			//失败跳转到login控制器中的默认方法登录视图
			$this->error('注册失败','./',2);
		}
	}
	public function login(){
		if(!IS_POST){
			$this->error('页面不存在的兄弟','./',2);
		}
		$account=I('post.account');
		$pwd=md5(I('post.pwd'));
		$where=array('account'=>$account);
		//取出账号
		$user=M('user')->where($where)->find();
		//判段账号是否存在
		if(!$user){
			//跳转到index方法
			$this->error('账号不存在的','./',2);
		}
		//判段密码是否一致
		if($user['password']!=$pwd){
			echo "<script>alert('请确定密码是否输入正确')</script>";
			//跳转到index方法
			$this->error('密码不存在的','./',2);
		}
		//判段用户是否被封号
		if($user['lock']){
			echo "<script>alert('该用户为恶意用户，以被锁定')</script>";
			session_unset();
			session_destroy();
			//跳转到index方法
			$this->error('兄弟你搞事情，被封了','./',2);
		}
		//处理自动登录
		if(isset($_POST['auto'])){
			$account=$user['account'];
			//获取登录时的客户端内网ip,不管啦，只要知道用户设
			//备变了，就不能让他自动登录
			$ip=get_client_ip();
			//cookie存储用户名和客户端ip
			$value=$account.'|'.$ip;
			//加密cookie内容
			$value=encryption($value);
			//php原生方法发送cookie，存活时间在配置项里
			setcookie('auto',$value,C('AUTO_LOGIN_TIME'),'/');
		}
		//登录成功写入session并跳转首页
		session('uid',$user['id']);
		$this->redirect('index/index');
	}
	 //内置验证码验证方法
    public function check_verify($code, $id = '')
    {
		$verify = new \Think\Verify();
		return $verify->check($code, $id);
	}
}
